
/**
 * @author Daniel,Alejandro,Jairo
 */
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.Iterator;

public class Calendario {

    private ArrayList<ArrayList<Partido>> matriz;
    private ArrayList<Equipo> e;

    public Calendario(ArrayList<Equipo> e) {
        this.e = e;
    }

    public ArrayList<ArrayList<Partido>> getMatriz() {
        return matriz;
    }

    public void setMatriz(ArrayList<ArrayList<Partido>> matriz) {
        this.matriz = matriz;
    }

    public static boolean esPar(int numero) {
        //Si el resto de numero entre 2 es 0, el numero es par
        if (numero % 2 == 0) {
            return true;
        } else {
            return false;
        }
    }

    public boolean esEntero(double x) {
        if (x % 1 == 0) {
            return true;
        } else {
            return false;
        }
    }

    //log x / log 2 numero entero
    public boolean esPotencia2(int numero) {
        return esEntero(Math.log(numero) / Math.log(2));
    }

    public void generarCalCopa() {
        matriz =new ArrayList<ArrayList<Partido>>();
        ArrayList<Partido> aux = new ArrayList<Partido>();
        
        if (!esPotencia2(e.size())) {
            String mensaje;

        } else {
            int i = 0;
            int j = 0;
            //int z=0;
            GregorianCalendar h = null;
            while ( i<e.size()-1) {
                //matriz.get(i).add(new Partido(e.get(i), e.get(i++)));
                aux.add(new Partido(e.get(i), e.get(i+1)));
                i++;
            }
            matriz.add(aux);

            //for (int z = 0; z < e.size(); z++) {
                //int k = z + 1;
            int k=0;
            ArrayList<Partido> aux2 = new ArrayList<Partido>();
            double longi=Math.log(e.size())/Math.log(2);
            while(k <(int)longi -1){
                
                 while (matriz.get(k).get(j) != null && j<matriz.get(k).size()-1) {
                    //matriz.get(k).add(new Partido(matriz.get(i).get(j).jugar(), matriz.get(i).get(j + 1).jugar()));
                    aux2.add(new Partido(matriz.get(k).get(j).jugar(), matriz.get(k).get(j+1).jugar()));
                    j++;
                }
           matriz.add(aux2);
           k++;
                
           }
               
            //}

        }

    }

    @Override
    public String toString() {
        String res="";
        for(int i=0;i<matriz.size()-1;i++){
            res+="Jornada "+i;
            for(int j=0;j<matriz.get(i).size();j++){
                res+=matriz.get(i).get(j).toString()+"\n";
            }
        }
        return res;
    }

   
}
